#include <xp/sce/sce.h>
#include <xp/bas/stdio.h>
#include <xp/bas/sio.h>

#include <xp/sce/lexer.h>

int sce_consume (xp_sce_t* sce, void* arg)
{
	return -1;
}

int sce_rewind (xp_sce_t* sce, void* arg)
{
	return -1;
}

int input_func (xp_sce_t* sce, int cmd, void* arg)
{
	int (*xxx[2])(xp_sce_t*, void*) =  { sce_consume, sce_rewind };
	return xxx[cmd] (sce, arg);
}

int xp_main (int argc, xp_char_t* argv[])
{
	xp_sio_t sio;
	xp_sce_t sce;

	if (argc != 2) {
		xp_printf (XP_TEXT("Usage: %s file\n"), argv[0]);
		return -1;
	}

	if (xp_sce_open (&sce) == XP_NULL) {
		xp_printf (XP_TEXT("Error: cannot open sce\n"));
		return -1;
	}

	if (xp_sio_open (&sio, argv[1], XP_TEXT("r")) == XP_NULL) {
		xp_printf (XP_TEXT("Error: cannot open %s\n"), argv[1]);	
		xp_sce_close (&sce);
		return -1;
	}


{
	xp_sce_lexer_t lexer;

	sce.input_func = input_func;
	if (xp_sce_lexer_open (&lexer, &sce) == XP_NULL) {
		xp_printf (XP_TEXT("Error: cannot open sce lexer\n"), argv[1]);
		return -1;
	}

	xp_sce_lexer_close (&lexer);
}

	xp_sio_close (&sio);
	xp_sce_close (&sce);
	return 0;
}
